#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main()
{
    int n, l, r;
    cin >> n >> l >> r;
    vector<int> a(n);
    for (int i = 0; i < n; i++)
        cin >> a[i];
    long long ret = 0;
    sort(a.begin(), a.end());
    
    for (int i = 1; i < n; i++)
    {
        int lower_val = a[i] - r;
        int upper_val = a[i] - l;
        
        // 找左端点：第一个 >= lower_val 的位置
        int left = 0, right = i - 1;
        while (left < right)
        {
            int mid = left + (right - left) / 2;
            if (a[mid] < lower_val)
            {
                left = mid + 1;
            }
            else
            {
                right = mid;
            }
        }
        int std_left = left;
        // 检查是否真的 >= lower_val
        if (a[std_left] < lower_val) {
            std_left = i; // 设置为超出范围，表示没有满足条件的
        }
        
        // 找右端点：最后一个 <= upper_val 的位置
        left = 0, right = i - 1;
        while (left < right)
        {
            int mid = left + (right - left + 1) / 2;
            if (a[mid] > upper_val)
            {
                right = mid - 1;
            }
            else
            {
                left = mid;
            }
        }
        int std_right = left;
        // 检查是否真的 <= upper_val
        if (a[std_right] > upper_val) {
            std_right = -1; // 设置为超出范围，表示没有满足条件的
        }
        
        // 只有当下界 <= 上界且都在有效范围内时才计数
        if (std_left <= std_right && std_left < i && std_right >= 0) {
            ret += (std_right - std_left + 1);
        }
    }
    cout << ret;
    return 0;
}